2511. 最多可以摧毁的敌人城堡数目

2511. 最多可以摧毁的敌人城堡数目

Similar Question

Solution Tips

方案一: 模拟, 没做出来

找到一个 1 和 -1, 他们之间有着最多的 0

军队的经过的位置只能有敌人的城堡, 这样就有点像滑动窗口了

窗口一直扩大, 遇到一个 1 就得停止了, 双向都可以行走, 滑动窗口有点不太直观

其实对于每一个 1, 他能移动的范围都是可以向左右两边确定的

如何通过预处理, 快速的找到左右两边的范围呢? 其实就是向左或者向右的 1 / -1 就是停止的位置.

前缀和? 子数组和为 0 的最长?

连续子数组, 可以暴力计算, 考虑滑动窗口和前缀和, 滑动窗口双向不够直观, 那就是前缀和

target 为 0 的最长子数组和, 双向, 前后缀

var captureForts = function(forts) {
    let ans = 0, pre = -1;
    for (let i = 0; i < forts.length; i++) {
        if (forts[i] == 1 || forts[i] == -1) {
            if (pre >= 0 && forts[i] != forts[pre]) {
                ans = Math.max(ans, i - pre - 1);
            }
            pre = i;
        }
    }
    return ans;
};